import junit.framework.TestCase;


public class BosqueTest extends TestCase {
	
	Bosque b;
	Grafo gA,gB,gC,gK;
	Grafo expectedA, expectedB, expectedC;
	Nodo nA = new Nodo(500, 100, "a");
	Nodo nB = new Nodo(100, 300, "b");
	Nodo nC = new Nodo(900, 300, "c");
	Nodo nD = new Nodo(250, 700, "d");
	Nodo nE = new Nodo(750, 700, "e");
	Arista a1,a2,a3,a4,a5,a6;
	
	public void testKruskalA() {
		//GRAFO A////////////////////////////////////////////////		
		a1 = new Arista(nA,nC,3);
		a2 = new Arista(nC,nE,4);
		a3 = new Arista(nE,nD,1);
		a4 = new Arista(nD,nB,2);
		a5 = new Arista(nB,nA,2);
		a6 = new Arista(nB,nE,1);
		
		gA = new Grafo();
		gA.addNodo(nA);
		gA.addNodo(nB);
		gA.addNodo(nC);
		gA.addNodo(nD);
		gA.addNodo(nE);
		gA.addArista(a1);
		gA.addArista(a2);
		gA.addArista(a3);
		gA.addArista(a4);
		gA.addArista(a5);
		gA.addArista(a6);
		
		expectedA = new Grafo();
		expectedA.addNodo(nA);
		expectedA.addNodo(nB);
		expectedA.addNodo(nC);
		expectedA.addNodo(nD);
		expectedA.addNodo(nE);
		expectedA.addArista(a1);
		expectedA.addArista(a3);
		expectedA.addArista(a5);
		expectedA.addArista(a6);
		
		b = new Bosque();
		gK = b.kruskal(gA);
		
		assertEquals(true,gK.equals(expectedA));
		///////////////////////////////////////////////////////////////////
	}
	
	public void testKruskalB() {
		//GRAFO B//////////////////////////////////////////////////////////
		a1 = new Arista(nA,nC,1);
		a2 = new Arista(nC,nE,2);
		a3 = new Arista(nE,nD,3);
		a4 = new Arista(nD,nB,4);
		a5 = new Arista(nB,nA,5);
		
		gB = new Grafo();
		gB.addNodo(nA);
		gB.addNodo(nB);
		gB.addNodo(nC);
		gB.addNodo(nD);
		gB.addNodo(nE);
		gB.addArista(a1);
		gB.addArista(a2);
		gB.addArista(a3);
		gB.addArista(a4);
		gB.addArista(a5);
		
		expectedB = new Grafo();
		expectedB.addNodo(nA);
		expectedB.addNodo(nB);
		expectedB.addNodo(nC);
		expectedB.addNodo(nD);
		expectedB.addNodo(nE);
		expectedB.addArista(a1);
		expectedB.addArista(a2);
		expectedB.addArista(a3);
		expectedB.addArista(a4);
		
		b = new Bosque();
		gK = b.kruskal(gB);
		
		assertEquals(true,gK.equals(expectedB));
		///////////////////////////////////////////////////////////////////
	}
	public void testKruskalC() {
		//GRAFO A//////////////////////////////////////////////////////////		
		a1 = new Arista(nA,nC,1);
		a2 = new Arista(nB,nD,2);
		
		gC = new Grafo();
		gC.addNodo(nA);
		gC.addNodo(nB);
		gC.addNodo(nC);
		gC.addNodo(nD);
		gC.addNodo(nE);
		gC.addArista(a1);
		gC.addArista(a2);
		
		expectedC = new Grafo();
		expectedC.addNodo(nA);
		expectedC.addNodo(nB);
		expectedC.addNodo(nC);
		expectedC.addNodo(nD);
		expectedC.addArista(a1);
		expectedC.addArista(a2);

		b = new Bosque();
		gK = b.kruskal(gC);
		
		assertEquals(true,gK.equals(expectedC));
		///////////////////////////////////////////////////////////////////
	}

}
